Graphical programming system and method for enabling a person to learn text-based programming

ABSTRACT

A graphical programming application is provided that is intended to be run under a graphic user interface operating system. When running the graphical programming software application, a user can select a graphic object and an associated event, and define actions that occur when the event happens, to develop or modify the graphical program as desired. In addition to a graphic editor view mode, the user may optionally view a plain text listing corresponding to the graphic program, or use a Visual Basic for Applications (VBA) code editor in which statements corresponding to the graphic program are displayed, or activate a mode in which both code editors are visible at one time on the screen, so that changes made to the VBA statements are immediately reflected in the graphical program and vice versa. Since the user is able to view the VBA code that corresponds to the graphical program steps, proficiency in programming with VBA text-based code is more rapidly developed.

FIELD OF THE INVENTION

The present invention generally relates to a system for programming acomputer, and more specifically, to a graphic programming system thatenables a user to assemble and edit elements of a computer program on adisplay screen within a graphic user interface environment, by selectingoptions that are graphically presented to the user.

BACKGROUND OF THE INVENTION

Learning to write computer programs can be an intimidating task for anadult. The task is very much like learning a foreign language withoutthe benefit of exposure to others who are speaking the language. Inorder to write a program, a person must at least be aware of thecommands that are available in the programming language. Learning thesecommands is analogous to learning the vocabulary of a foreign language,and repeated exposure to the commands similarly provides the preferredapproach for learning to write computer programs.

Further frustration for the novice programmer arises when a programfails due to syntax errors, such as the use of a comma in a programstatement when a semicolon is required. Because it is likely that manylogic, language, and syntax errors will appear in programs written bybeginners, debugging even a relatively simple program can take hours,leaving the new programmer wondering if the task is worth the effort.

Imagine further the difficulty of teaching programming to youngsterseight to twelve years in age. Only the most intelligent and motivated ofchildren in this age group are likely to be successful in learning toprogram computers. Most children who try to write a computer programusing a conventional text-based programming language give up infrustration after making one or two attempts. In view of the difficultyinvolved in learning programming commands and concepts, correctingsyntax errors, and debugging faulty logic, it is not surprising thatmost young children are unwilling to invest the time and effort requiredto learn to program in the conventional manner.

In recent years, software development applications designed to run undera graphic user environment such as Microsoft Corporation's WINDOWS™operating system have become very popular because they reduce the effortrequired to create a computer program. Computer language programs suchas Microsoft Corporation's VISUAL BASIC™ enable a user to quicklydevelop an interface for a program by selecting and positioning labels,drop-down list boxes, text boxes, and other objects and tools on thedisplay screen. To create the interface, the user simply selects thedesired object from a toolbar with a cursor that is controlled by apointing device (e.g., a mouse), moves the object to the desiredposition on the display screen, and releases the pointing device selectbutton. Properties and characteristics of the object, such as backgroundcolor, border style, and size/type of font used are selected from amongthe options presented in drop-down list boxes within the menu of theVISUAL BASIC paradigm. However, to complete a programming project, theuser must finally enter the textual statements that control how theobjects within the interface respond to user input or to other events.This last step is frequently too intimidating for most children eight totwelve years in age to master, because the child must learn Basiclanguage program commands and must use the correct syntax in writing theprogram code that supports the graphically created user interface.

Other graphic user programming applications have taken a further step insimplifying the task of creating working programs. For example, theOBJECT VISION™ programming application, which also runs under MicrosoftWINDOWS, provides at least some of the underlying program code forobjects that are graphically selected and arranged by the user on thedisplay screen. However, the user does not see the underlying softwarecode and cannot learn from decisions made by the programming applicationin producing it. In addition, the predefined tools and control actionsthat are provided in such program development applications are intendedfor adults, i.e., for use in business or in connection with adulthobbies and interests that are typically boring to young children. Evenif adults or children use such program development applications, theytypically do not progress in their programming skills, nor do they learnhow to write more sophisticated and varied programs that are beyond therange of such applications.

A product that allows children to create games by selecting graphicobjects is KLIK & PLAY™ software, which was developed by EuropressSoftware and is distributed by Maxis. In the KLIK & PLAY programmingenvironment, the child is provided with several games that can bemodified by adding objects or by changing the properties and/or actionsof the objects in the game. Once the child develops confidence in makingchanges to the provided games, the child is encouraged to create a gameby combining provided graphic objects on one of the providedbackgrounds. In a Storyboard Editor that displays thumbnail-sizedrepresentations of the levels (pages) of a game, the child selects alevel to edit. An Edit Level Option can then be chosen from a menu toselect, add, and/or edit objects in the level. The Edit Level screenlists a number of different libraries covering various subjects ofinterest to children, such as space ships, warriors, animals, and birds,etc. The objects in a selected library are displayed in a bar across thetop of the display screen. By selecting an object from the bar with thecursor, the child can move it into the game window of the current gamelevel. After an object has been placed in the game window, clicking onit with the right mouse button opens a Properties selection box in whichthe child can select Movement, Direction, View (relative position ofobject in regard to other objects), Edit Animation (opening an animationdialog edit box), Edit Icon and Object Name, set a New Level Object(Active, Backdrop, or Quick Backdrop), or Resize the object.

Once all object properties are set, the child selects the response(s)that will occur for each event occurring in the game level, e.g.,producing a selected sound in response to the collision of two objects.When selected, a spreadsheet-like Event Editor shows each of the objectsused in a level at the top of the screen. On the left side of the screenare listed the conditions for the object interactions. If the childselects an object, the other objects with which the selected objectinteracts are identified by check marks in a grid. For example, in apinball game, the various objects include objects with which the pinballcollides. If the pinball is selected, the list on the left showscollisions between the ball and each of the other objects. When thecursor is moved over the check mark below an object, a label shows theresponse to the collision between the ball and that object.

Only a limited number of predefined responses are available for eachtype of event in the KLIK & PLAY software. There is no option in theproduct to enter text program steps that might extend the range of gameobject interactions beyond those provided. Although it is possible touse the product to produce relatively sophisticated games without theopportunity to write any text-based program code, there is an inherentand predefined limit to the variety of actions and movements that can beachieved with the software. More importantly, the youngster is nevergiven the opportunity to learn how the graphic objects, events,properties, and responses chosen in the purely graphic paradigmtranslate into corresponding program code. Thus, KLIK & PLAY, like othersuch purely graphic programming applications, does not lead a childalong a natural progression from simple graphic object manipulation intofamiliarity with the underlying program code represented by the graphicobjects, their responses, and interactions.

It will be apparent that a new approach is needed to teach youngchildren to program computers. The programming system that achieves thisgoal should be graphic and simplistic in nature at its base level, toinitially encourage programming, but should enable the young programmerto develop programming skills beyond simply selecting and assemblinggraphic symbols to create a program. In addition, the system shouldpique the interest of youngsters by including objects and tools of atype that children are likely to want to use and to which they willreadily relate. Most children enjoy playing games and will immediatelyembrace the opportunity to modify games that are provided, even ifsimple in nature. Providing appropriate graphics, animation, and soundeffects that can be added to the programs modified/developed by childrenshould further encourage and motivate them to learn more about theunderlying program language. Products such as KLIK & PLAY succeed inachieving this basic object of being interesting and in providing arelatively simple technique to create/modify games; however, there is noattempt made in this or other such prior art products to advance a childto a higher programming skill level.

To accomplish a further educational benefit, a programming applicationshould enable users to compare the graphic program that they producewith the corresponding text-based program code. By exposing new youngprogrammers to text-based program commands, vocabulary, and syntax inthis manner, many will be led to learn more about conventionalprogramming. Currently, a computer programming application of this typeis not available.

SUMMARY OF THE INVENTION

In accordance with the present invention, a graphical programming systemis defined that is adapted to execute under a graphic user interface.The graphical programming system enables a user to design and modify agraphical program, and in the process, assists the user in learning toprogram a computer using a text-based programming language. Thegraphical programming system executes under the graphic user interfaceon a computer that includes a user input device for making selectionsand entering instructions that control the graphical programming system,and a display screen on which are displayed components of the graphicalprogramming system. Object means are provided for presenting a pluralityof graphic objects on the display screen of the computer and forenabling the user to select a specific graphic object from among theplurality of graphic objects, for inclusion in the graphical program.Action means display a plurality of actions to the user on the displayscreen, and enable the user to select a specific action for execution bya user selected graphic object, in a user defined sequence of graphicprogram steps that include text and graphic objects. The user definedsequence of graphic program steps comprise the graphical program.Moreover, mode selection means are included for enabling the user toselect a mode from among a plurality of different modes. One of theplurality of different modes displays at least a portion of a textualcomputer program listing corresponding to a portion of the graphicalprogram. The textual computer program listing assists the user to learncomputer programming by exposing the user to program commands of thetext-based programming language that correspond to the graphic programsteps of the graphical program.

The plurality of modes selectable by the user include a plain text modeenabling the user to enter text that is translated to correspondingcommands in the text-based programming language for modifying thegraphical program. The plain text entered by the user is constrained totext that correctly translates to the commands in the text-basedprogramming language. Preferably, the plain text that can be entered bythe user is limited to a predefined set of programming languageconstructs that are presented to the user as keys on a graphicalkeyboard displayed on the display screen, for selection and use indesigning and modifying the graphical program.

Another mode selectable from the plurality of modes enables the user tofreely enter and modify commands of the text-based programming languagein order to further design and modify the graphical program. Yet anothermode of the plurality of modes enables the user to simultaneously viewboth an editor for the graphical program and an editor for thetext-based programming language. As a result, changes in the graphicalprogram are immediately reflected in the corresponding commands of thetext-based programming language, and changes in the commands of thetext-based programming language are immediately reflected in thecorresponding graphical program.

Preferably, the graphical programming system includes a basic graphicalprogram for the user to modify.

Means are included in the graphical programming system for mappingbetween the graphical steps of the graphical program and thecorresponding commands of the text-based programming language. Thegraphical program is executed by the computer, based upon underlyingcorresponding commands of the text-based programming language.

The graphical programming system further comprises animated help meansthat prompt the user to carry out steps required in designing andmodifying the graphical program. The help means also provide aid to theuser in debugging the graphical program. Further included are eventmeans that enable the user to select an event from among a plurality ofevents graphically presented to the user on the display screen, forassociation with one of the graphic objects selected by the user. Theaction means enable the user to specify the action associated with oneof the graphic objects selected by the user that will be implementedwhen the event selected occurs.

Another aspect of the present invention is directed to a method forcreating a graphical program for use on a computer, running under agraphic user interface. The method enables a user to graphically designand modify the graphical program, and by doing so, to better understanda text-based programming language. Generally, the steps of the methodare consistent with the functions of the graphical programming systemdescribed above.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same becomesbetter understood by reference to the following detailed description,when taken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram of a personal computer system suitable for usein implementing the present invention;

FIG. 2 is a block diagram showing components of the personal computersystem of FIG. 1;

FIG. 3 is a block diagram showing functional components of the graphicalprogramming system;

FIG. 4 is block diagram showing functional run-time components ofgraphical programs (games) that are designed/modified by the graphicalprogramming system, as disseminated to other users;

FIG. 5 is a flow chart showing the logical steps implemented in twomodes in which the graphical programming system operates;

FIGS. 6A and 6B are a flow chart showing a third mode of the graphicalprogramming system;

FIG. 7 is a flow chart illustrating the logical steps of a fourth modeof the graphical programming system;

FIG. 8 is a flow chart showing the logic implemented in a fifth mode;

FIG. 9 is an exemplary (graphically simplified) view of a screen from agraphical program that is being modified using the graphical programmingsystem, by selecting objects that will be included in the graphicalprogram;

FIG. 10 illustrates a portion of the display screen view of the controlpanel in the graphical programming system, showing by example optionsthat are available when an event is edited;

FIG. 11 shows a portion of the display screen on which an exemplary viewof the controls available in the second mode to select graphic objects,actions, and parameters;

FIG. 12 illustrates a portion of the display screen view of the controlpanel, showing an example of the options provided when stepping throughevents;

FIG. 13 illustrates one exemplary screen (first step) of those that maybe displayed when the step editor is used for graphically editing theprogram;

FIG. 14 illustrates another exemplary screen displayed when the stepeditor is used for editing the graphical program;

FIG. 15 illustrates a display screen view of a keypad on which areincluded programming constructs for entering plain language programminglanguage commands in the third mode; and

FIG. 16 illustrates a code editor for adding to and/or editingtext-based program steps, in a fourth mode.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention is implemented by a set of software instructionsthat are executed on a personal computer system 10, like that shown inFIG. 1. Personal computer system 10 is generally conventional in design,and in the drawing is shown as a desktop system having a processorchassis 12 that includes a floppy disk drive 14 and a hard drive 16.Also included within the processor chassis, although not required, is aCD-ROM drive 27. Atop processor chassis 12 is a display monitor 18, andcoupled to the processor chassis for input of instructions and controlof application programs running on the personal computer is a keyboard20. A mouse 22 (or other conventional pointing device) is also connectedto processor chassis 12, thereby enabling the user to control theposition of a cursor (not shown) on the screen of display monitor 18,and enabling the user to make selections from text and graphic objectson the screen by positioning the cursor over the object and selectingthe desired option with the select button on the mouse or other pointingdevice (text and graphic objects are also selectable with the keyboard).A specific graphic object displayed on the screen can thus be chosenfrom among a plurality of such objects. In addition, it is also possibleto "drag and drop" graphic objects from one point on the screen toanother. This option is particularly relevant to the preferredembodiment of the present invention, since it enables a user tomanipulate graphic objects in designing and modifying a graphic program.

Within processor chassis 12 are disposed a plurality of integratedcircuits and other components, as are well known to those of ordinaryskill in the art. FIG. 2 is a block diagram illustrating componentswithin the processor chassis that are used for implementing the presentinvention on personal computer 10. For example, a display interface 15is provided to couple graphic output from the graphic programming systemexecuting on a CPU 23 to display monitor 18. Communication between CPU23 and display interface 15 passes over a data bus 13, as doinstructions and control signals for other elements of the personalcomputer system. A hard drive and floppy drive interface 17 providesbi-directional communication between floppy drive 14 and hard drive 16,conveying data bi-directionally between the storage provided on a floppydrive disk or on the magnetic media of hard drive 16 (not separatelyshown) and CPU 23, over data bus 13. The data bus also conveys signalsbetween the CPU and a serial/mouse port 19, to which mouse 22 isconnected. Alternatively, mouse 22 can be connected to personal computer10 through a bus port (not shown), allowing the serial port to be usedfor other purposes.

A memory 21 includes both read only memory (ROM) and random accessmemory (RAM) for storing variables and machine instructions that controlthe operation of CPU 23. Memory 21 is connected to CPU 23 through databus 13, as well as to the hard drive or floppy drive through interface17. Typically, when the user executes a program on the personalcomputer, program steps comprising machine instructions are loaded intomemory 21 from a CD-ROM, from the hard drive, or from a floppy disk thatis inserted into the floppy disk drive. The program steps are thenexecuted by CPU 23 to carry out the functions of the computer programbeing run. In most software running on a computer, including the graphicprogramming system comprising the present invention, the user interactswith the program being executed by the CPU by making selections andentering text that cause the CPU to implement specific functions definedby the machine instructions, in a manner determined by the user's input.A keyboard interface 25 couples keyboard 20 to the data bus, therebyproviding a path for signals developed by operator input on keyboard 20to be conveyed to CPU 23.

Although a desktop type personal computer is illustrated in FIG. 1, thepresent invention can also be implemented on a laptop/portable computer,or on a workstation. In fact, virtually appropriate machine instructionscan be developed to implement the present invention on almost anycomputer that is capable of displaying graphics.

It is contemplated that the present invention will be sold as anapplication program specifically intended to entertain and to educatechildren in the ages of eight through twelve. However, the conceptsembodied in the preferred embodiment can readily be extended to providethe same benefit to users of other ages and capabilities. Accordingly,it is not intended that the present invention in any way be limited inscope by the disclosure of this somewhat more simplistic preferredembodiment, which is more suitable for younger children with lessability to learn conventional programming. The application program willtypically be provided to the user either on a CD-ROM or on a floppydisk. Accordingly, a CD-ROM interface 29 is optionally included amongthe components within processor chassis 12 and is coupled to data bus 13for conveying the contents of files stored on a CD-ROM onto data bus 13for transfer to RAM within memory 21. If the application programcomprising the present invention is provided on a floppy disk, the diskwill be inserted within floppy drive 14, and the files comprising theprogram either transferred to hard drive 16 or used to run the programdirectly. In either case, the machine instructions in the filescomprising the program will be transferred into RAM, for use incontrolling CPU 23 to carry out steps under the direction of the user toenable the user to create, run, and/or modify graphic programs.

Since the preferred embodiment of this invention is intended to be usedby relatively young children, it is likely that a set of predefinedgraphic programs comprising games will be provided with the applicationprogram to insure that the users are sufficiently entertained to enablethe educational process to proceed. Moreover, testing has shown thatproviding a basic graphic game program, which is readily modifiable by achild, will more likely hold the child's interest and thereby succeed ineducating the child, helping him/her to learn the basic concepts forcreating an original program "from scratch." The intent is to enable thechild to initially develop confidence in modifying one of the basicgraphic game programs provided to the child with the applicationprogram, by manipulating graphic objects on the screen of the displaymonitor. However, more importantly, the child will also be encouraged tomodify the provided basic programs in one of three additional editingmodes that are textually oriented. Two of these modes disclose anunderlying text-based programming language actually used to implementthe graphical program. In the preferred embodiment, MicrosoftCorporation's VISUAL BASIC FOR APPLICATIONS™ (VBA) product is used asthe text-based programming language. It will be understood that othertext based programming languages could be used in the present invention,particularly other forms of Basic.

The child need not know or understand the VBA command structure whensimply modifying the graphical program, since the syntax and otherproblems associated with programming in a pure text-based programlanguage will likely be beyond the initial skill level of users in theintended age group. However, as the child develops more experience withthe graphical programming mode, it is likely that the child will moveinto making modifications of an existing graphical program by changingor adding VBA program steps instead of simply changing graphic objectsand actions in a game.

Referring to the block diagram shown in FIG. 3, the functionalcomponents of an editing environment that are provided to enable a childto create, run, and/or modify a game are shown in an approximatehierarchy. The top of the block diagram is fully exposed to the child,and each of the underlying blocks are increasingly less evident.

As noted above, the application software comprising the currentpreferred embodiment of the present invention will include a number ofprepared basic graphical games. It likely that a child will initiallysimply play the games; however, users will be encouraged to modify thegames using the graphical programming mode, and later will begin tocreate games, first in the graphical programming mode, and later, in atext-based mode. It should be noted that these predefined games can besubstantially changed as a result of modifications contributed by achild using the editing capabilities provided in the graphicalprogramming system, both in the graphic programming/editing mode, and inthe text editing modes that will be discussed below. The child is alsoprovided with a set of predefined objects for use in the graphicalprogrammed games. Functional components supporting the editing include aprogramming module that enables the child to create/modify game programsgraphically and later, as confidence and ability are gained, withtext-based program steps. A debugging module is also included, as is apublishing module, which is used to create a run-time version of anygame created or modified by a child. Thus, with the publishing module, achild can modify or create a game and save it to a floppy disk in arun-time form so that the game can be run on a computer on which thegraphical programming system software is not installed.

A board designer is used to create a graphic backdrop for the games,enabling the child to select among a variety of predefined backdrops asappropriate for the specific game being edited or created. As shown inthe right-hand side of FIG. 3, a Zack development kit (ZDK) is included,for use by application developers to create objects.

The graphical game programs are actually implemented using an underlyingVBA programming language engine or system, which is entirely text-based.Support for the graphical programming system is provided by a frameworkor set of code libraries and control structures. To simplify theprogramming process, forms, which are basically graphic containers orwindows for the elements included in the editing screen presented to auser, are included, along with controls for manipulating objects andother aspects of the graphic and text-based programming environmentsavailable to a child, by selecting among the modes.

As is the case with any application running on personal computer 10, thegraphic programming application interacts with the operating system. Inthe preferred embodiment, Microsoft's WINDOWS™ graphic user interfaceoperating system is used to effect the graphic programming environmentpresented to the user. This operating system includes Object Linking andEmbedding (OLE) capabilities. It is also contemplated that the presentinvention could be implemented for execution under other graphic userinterface operating systems, such as Apple Computer Corporation's SYSTEM7™. Underlying the operating system is the hardware upon which thegraphic programming application software and operating system run. Thishardware, which was described above in connection with the preferredembodiment, is preferably based on Intel Corporation's 80386 CPU (orbetter), but may comprise other types of personal computing systems thatuse other types of processors, such as those sold by Apple Corporation.

In FIG. 4, a block diagram illustrates the functional components of thepresent invention when it is running a program created or modified by auser. As indicated by the layout of the functional blocks, it will beapparent that the games created or modified by a child are on the toplevel, clearly evident to the user. In addition, objects included orprovided for inclusion within a child-created or modified game are alsomade available to the user during the running of the graphic program.However, it should also be noted that although it is disposed on thesecond layer, the VBA is available to the user for editing a game thatis running. Similarly, the framework, which includes the set of codelibraries and control structures, is at least partially evident to auser as the game created or modified by the user is running. Incontrast, the forms and controls are not made evident to a user,although they are certainly implemented in the background. The onlyexception would be controls that are included or available for use in agame that is running, to enable user interaction. In addition, theoperating system/OLE and hardware are necessary elements for running theuser-created or modified game.

With reference to FIG. 5, a flow chart illustrates an overview of thelogical steps involved in editing/creating a program with the presentinvention. The ability to edit or create a program using graphicalobjects is an important aspect of the present invention, since itenables relatively unskilled programmers such as children to quicklymake changes and develop programs, and enables them to grasp simpleprogramming concepts. As will be noted below, a user also has the optionand is encouraged to increase his/her understanding of text-basedprogramming as it relates to the graphic program developed using graphicobjects, by selectively editing the program in other views or modes thatexpose the underlying text-based programming steps.

A user starts the editing process in a block 40. The first step is torespond to a user's decision to modify an event, as indicated in a block42. An event can be any action carried out within a game (or other typeof program), e.g., the occurrence of one object striking another. Next,a block 44 enables the user to choose an object, which in connectionwith an action, will determine an event. A block 46 specificallyprovides that an action is chosen; this choice depends upon the objectthat is selected by the user, to avoid nonsensical results. For example,if the user chooses a tree as an object, the optional actions that arepresented for modification, addition, or deletion would not include suchactions as "screaming," because trees are incapable of that action.

If the graphic choices implemented by the user make use of existing codein the graphical program, a decision block 48 responds by proceeding toa block 50 that displays the code. Thus, the user is enabled to see thecorresponding text-based code associated with the combined event andobject selected for modification, assuming that code had already beenprovided for that combination. Thereafter, or if code does not alreadyexist for the event and object interaction selected by the user, thelogic proceeds to a decision block 52. In decision block 52, the programdetermines if the user has chosen to add a new action rather thanmodifying an existing action If adding a new action, a Wizard or Helpscreen is opened to assist the user, as indicated in a block 54.Wizards, which are also used in other Microsoft Corporation productssuch as WORD FOR WINDOWS™, are routines that lead a user through aseries of steps to accomplish a desired task. Thereafter, the logicloops back to decision block 52, and if the user has not selected New,proceeds to a decision block 56. In decision block 56, the programdetermines if the user has indicated that an object or action should bedeleted. If so, a block 58 provides for deleting the line(s) of codecorresponding to the object or action and updating the view tocorrespond to the status of the graphical program following deletion ofthe object or action. After block 58, decision block 52 again determinesif the user is selecting a new object or event. However, if the responseto the determination in decision block 56 is negative, the programproceeds to a decision block 60, which determines if the user hasselected "Text View."

There are actually three modes associated with Text View, each of whichcan enable the user to edit the program by entering actual textualprogram statements (as opposed to simply selecting graphicobjects/actions to make changes in the program). These alternativeoptions include the advanced view editing mode, referenced in a block62, a VBA view editing mode, referenced in a block 64, and a mode inwhich both the VBA and graphical editing modes are viewed simultaneouslyon the screen, which is referenced in a block 66. Details concerningeach of the editing modes are described below.

Assuming that the user has not selected to edit the program in the TextView, a decision block 68 determines if the user has selected "Done,"and if so, a block 70 provides for closing the windows open for editingthe program. In a block 72, the logic returns to the run mode of thegraphic program. In block 68, if the user does not select Done, thelogic returns to decision block 52, giving the user the option ofselecting a new object or action to be added to the game program beingedited.

FIGS. 6A and 6B together show the steps involved in editing a programunder the advanced view, as indicated by the title in block 62 of FIG.6A. A block 80 indicates that a new toolbox is displayed, enabling theuser to select from among a plurality of predefined text code constructsthat are available to modify or create a game. In the preferredembodiment, the toolbox mentioned in block 80 is a code keyboard onwhich the available plain text code constructs are indicated by textappearing on each of the keys of the keyboard. (See FIG. 15.) Use ofthese plain text code constructs is described below in connection with aspecific example.

A block 82 displays the code editor that allows the user to create,delete, or modify high-level plain text statements corresponding tosteps of the graphic program. The graphical code is translated to thenew plain text format in a block 84, and the plain text code in this newformat is displayed to the user in a block 86. Examples of thetranslation of code from the graphic program to the high-level plaintext format are also included in the discussion below.

A decision block 88 determines if the user has decided to "add aconstruct" to the plain text listing. (A "construct" is typically aplurality of related statements.) If so, a block 90 calls up a Wizard orHelp sequence that assists the user in building the construct to beadded to the code for the program. If the user has chosen not to carryout this step, a decision block 92 determines if the user has chosen toadd a statement from the options presented in the code editor. If so,Wizard assistance is again provided in building a syntactically correctstatement, as noted in a block 94. The logic then loops back to decisionblock 88.

A negative response to decision block 92 leads to a decision block 96.At this point, the program determines if the user has selected an optionpresented to validate the program. If so, a block 98 precompiles thestatements contained within the code editor window. This step generatespseudo-code (P-code), which is an intermediate precompiled format of theplain text code statements that is not immediately executable.Thereafter, the logic proceeds in FIG. 6A at point C. If the user hasnot selected the Validate option in decision block 96, the logicproceeds to FIG. 6B at point B, continuing with a decision block 100.Decision lock 100 determines if the user has selected a "Delete" controland if so, a block 102 deletes the current statement that has beenselected if doing so would not cause any syntax error. Thereafter, theblock proceeds to the same point C reached from block 98 in FIG. 6A.From point C, a decision block 104 determines if any error exists in thecurrent code following precompilation of the existing statements ordeletion of a statement. If not, the logic returns to point A on FIG.6A, thereby returning to decision block 88. However, if an error isfound within the precompiled statements or following deletion of astatement, a block 106 maps the error message to the line causing theerror in the plain text code, and a block 108 displays an error messagethat explains the nature of the error. After block 108, the logicproceeds from FIG. 6B to point A in FIG. 6A. Again, from point A in FIG.6A, the program loops back to decision block 88.

Referring to FIG. 6B, in decision block 100, if the user has notselected the Delete option, a decision block 110 next determines if theuser has indicated that editing of the program is "Done" and if so,proceeds to a block 112 in which all statements existing in the codewindow are precompiled. Thereafter, a decision block 114 determines ifan error exists in the code that was precompiled to P-code, and if so,the program proceeds to block 106 to repeat the steps for mapping theerror message to a particular line in the code and for displaying theerror message.

If no error was found in decision block 114, the statements entered bythe user are translated from P-code to graphical code in a block 116,and the graphical code listing is updated within a window of the codeeditor in a block 118. A block 120 then closes the advanced editing viewwindow, and as indicated in a block 122, returns to the next step (ofFIG. 5).

A negative response to decision block 110 leads to a decision block 124to determine if the user has selected "Cancel." If so, the advanced viewwindow is again closed, as provided in block 120, prior to returning tothe logic in FIG. 5. However, if the user has not selected Cancel, adecision block 126 determines if the user has indicated a desire to edita statement. This decision leads to a block 128, which provides a codebuilder Wizard for building or modifying a statement. Thereafter, oralternatively, if the response to decision block 126 is negative, thelogic proceeds to point A in FIG. 6A, looping back to decision block 88.

In FIG. 7, details of the steps implemented when editing a program inVBA view are shown, as indicated by block 64. A block 140 provides forgetting a user selected object and an associated action, which the userhas previously indicated are to be modified. In a block 142, the programobtains a line number corresponding to the graphic object and itsassociated action, and in a block 144, opens the VBA code window inwhich the line obtained in block 142 will be displayed to the user formodification. Modification of VBA code may optionally involve use ofrelated VBA tools (i.e., a VBA toolbar) and require that other windowsbe opened for displaying code; a block 146 thus provides for openingother VBA windows as required.

In a block 148, the user initiates editing of the displayed VBA code. Anediting operation using VBA code may involve the addition of new codestatements, the modification of the existing displayed code statement,or deletion of code statements. After the user completes an editingoperation in the VBA code window, a block 150 precompiles the VBA codeand completes a regular syntax check, as is conventionally done whenediting VBA code. Next, a decision block 152 determines if an error hasbeen detected in the precompilation and syntax check performed in block150. If so, a block 154 maps the error detected to the particular linein which it occurred, and displays an error message to the userindicating the nature of the error found in the code statements. Itshould be pointed out that no attempt is made to check for logic errorsor run-time errors at this point. Instead, the error checking is limitedto the precompilation and syntax checks that are performed in block 150.

If an error is not detected in decision block 152, the logic proceeds toa block 156, which updates a View Manager (the View Manager displays thecode in the selected view mode), confirming that the code modified oradded by the user has passed the precompilation and syntax checking. Adecision block 158 determines if the user has elected to quit the VBAview, having completed all intended editing in the VBA view mode. Ifnot, the logic loops back to block 148, enabling the user to completefurther editing of the code. Alternatively, the logic proceeds with ablock 160, which initiates a Do loop that processes every statement inthe game program by carrying out the steps indicated in blocks 162-168.

The first step of the Do loop is implemented in a decision block 162,which determines if the current line being processed can be translatedand/or displayed as graphical code involving modification to an object.In view of the differences between the power and capacity to expressprogramming concepts in VBA statements compared to that available incorresponding portions of a graphical program, it should be apparentthat many lines and constructs expressed in VBA mode cannot betranslated or displayed in the graphical programming mode or view.Accordingly, in such cases, a block 168 provides for putting into anoutput buffer an indication that the line or construct of the VBA codecurrently being processed is not fully translatable. However, if the VBAcode statements can be translated and displayed as graphical programmingcode, a block 164 translates the VBA code to the output buffer in thegraphical code form. A decision block 166 determines if all lines in theprogram have been processed and if not, loops to a block 170, which getsthe next line in the VBA program. Thereafter, the loop repeats, startingwith decision block 162.

After all lines have been completed, as determined in decision block166, the logic continues with a block 172. In block 172, the programupdates the View Manager with the output buffers loaded in blocks 164and 168. The View Manager is then able to display the correspondinggraphical program (where possible) based upon the editing carried out bythe user in the VBA editing mode. In a block 176, the procedure returnsto block 68 in FIG. 5.

The other text-based editing mode that is available to a user isobtained by selecting the option to view both the graphical program andcorresponding VBA code. The advantage of this mode is that it providesthe user with more graphic tools and assistance and provides a morefriendly interface, since it includes both the graphic view and the VBAview editing capabilities, which are simultaneously displayed in windowson the screen. In this mode, the user is not restricted to a specificset of language constructs that are exposed on a tool or keyboard.Instead, the user is able to type into the VBA code editor whateverstatements or constructs are allowed by VBA. In addition, this mode isnot modal, since the user can switch back and forth between thegraphical program and corresponding VBA editing windows. Synchronizationbetween any changes made in the graphical program editor window or theVBA code editing window occurs immediately when the user enters,deletes, or changes a statement. Thus, modification of a VBA statementin the VBA code editor window produces a corresponding and immediatechange (to the extent possible) in the graphical programming codeediting window, and vice versa. A significant advantage of this mode isthat it enables the user to immediately see how one representation ofthe program is reflected in the other (where possible).

In FIG. 8, as indicated in block 66, the View Both editing modes optionproceeds to a block 180, in which objects and actions selected by theuser for editing are obtained. A block 182 provides for getting thecorresponding line number (for the VBA code) and in a block 184, a VBAcode window is opened for the event indicated by the line number. Inaddition, the selected line within the VBA code displayed in the VBAcode editor window is highlighted in a block 186. Other VBA windows(and/or a VBA toolbar) are opened as required in a block 188.

In a block 190, the user begins to edit the code in either the VBA orgraphical program editing windows. Changes made to the code, forexample, adding, deleting, or modifying an existing graphic or VBA codestatement, are precompiled and checked using the regular syntax checkingprocedures, as indicated in a block 192. Any error detected during thischeck is identified in a decision block 194. If an error is found, ablock 196 provides for displaying the error message that explains thenature of the error. The logic then returns to block 190, so that theuser can correct the indicated error. If an error is not detected indecision block 194, the logic proceeds to a decision block 200, whichdetermines if the user has edited the graphical program in the graphicalprogram editing window, or the VBA code program in the VBA code editingwindow. If the graphical program was edited, a block 204 provides forupdating the corresponding VBA view provided in the VBA code editorwindow that is open on the screen so that it corresponds directly to thechanges in the VBA code editor window. However, if the editing changewas made in the VBA code editor window, a block 202 initiates a Do loopfor all lines in the VBA program. In this loop, a decision block 206determines if the current line in the VBA code editor window can betranslated into a corresponding graphical program statement. If so, ablock 208 translates the VBA code into the corresponding graphical codeand places the translated graphical code into an output buffer. If it isnot possible to translate the VBA code to an equivalent graphical code,a block 210 provides for putting the user modification to the VBA codeinto an output buffer with an indication that it cannot be translated.Following blocks 208 or 210, a decision block 212 determines if alllines in the VBA code window have been processed, and if not, returns ina loop back to decision block 206.

Once all lines are translated, the logic proceeds to a decision block214. In addition, following the update of the VBA code editor window inblock 204, the logic also proceeds to decision block 214. In thisdecision block, the program determines if the user has closed the VBAcode edit window and if not, loops back to block 190, enabling the userto carry out further editing changes to the code. However, if the userhas elected to close the VBA code edit window, a block 216 carries outthat step. Thereafter, a block 218 frees the buffers that were usedduring the code translation process, and a block 220 returns to thelogic in FIG. 5, at decision block 68.

An exemplary set of screen displays developed in connection with aprototype preferred embodiment of the present invention are shown inFIGS. 9 through 16. These figures show various exemplary aspects of thepresent invention as embodied in a game called "Kongo King." Kongo Kingrepresents a predefined graphical game program like those that might beincluded with the software comprising the present invention, formodification by a child or other user.

As the Kongo King game is run on personal computer 10, objects in thegame appear in a running game area 230 of the display screen, above acontrol panel 232. At any time during the play of the game, the user caninterrupt the execution of the game in order to modify it by activatinga toggle switch 258, which appears on a sub-panel 234. When toggleswitch 258 is flipped to a Modify position, execution of the game stops,but all objects remain visible on the screen at the point that the gameis interrupted.

In the preferred embodiment, the visual world of the game may extendbeyond the limits of the screen display, onto a virtual screen thatbecomes visible as the characters or objects in the game move toward theedges of the screen, causing the field viewed to shift. A view selectionwindow 236 is included on control panel 232 and is provided with a usersizable selection window 238 (shown as dash lines in the Figure) toenable the user to move about in the virtual world of the game and todisplay a particular area of interest within the game at the point it isstopped for modification. In the exemplary view shown in FIG. 9, a KongoKing object 240 is illustrated on a backdrop comprising a beach scene242. Also evident in this Example are other objects, including a palmtree 244, bananas 246, and a brick wall 248. Although the basic game aspredefined when supplied to the user includes these objects, additionalpredefined objects can be added by the user. The graphical programmingmode can be entered by moving the cursor over one of the objects in thegame area of the screen (e.g., while the game is paused) and doubleclicking the select button on the mouse or other pointing device. To"graphically program the game," for example, to add a new object to thegame, a user can move a cursor over one of the objects included onsub-panel 234 using mouse 22 (or other pointing device), and byselecting the object by holding down the select button, can drag anddrop the object anywhere on the game area of the screen. (The object isdropped when the select button is released.) While not shown in thisExample, each object is represented in its graphic box by an appropriategraphic icon. Thus, if the fourth object on sub-panel 234 comprises abanana, the user can add a third banana 246 using this drag and droptechnique. Although only five objects are represented by graphic boxesin sub-panel 234, typically, the user can access additional objects byselecting a button 256 that displays other objects, and can change thespecific objects exposed on the sub-panel, by selecting either controlbutton 254 or control button 256. Object buttons are disposed on anobject panel 252 that becomes visible when the user selects a toggleswitch 250c.

Also included on control panel 232 is a toggle switch 250a, which isused to set the parameters for the Hero (Kongo King) and a toggle switch250b, which is used to set parameters such as gravity, lighting, andother global properties (identified as World properties in the Figure).To the right of toggle switch 250c are toggle switches 250d and 250e.Toggle switch 250d selects a Workshop option in which the user isprovided hints for modifying the game. The workshop screen is intendedto teach the user additional aspects of programming in a way that theuser will find entertaining. Toggle switch 250e is selected to displayadditional options (toggle switches), as shown below in connection withFIGS. 10 and 12.

Control panel 232 includes an Edit button 264, which is activated usingthe cursor controlled by mouse 22 to display a sub-menu (not shown) thatincludes options for Cut, Copy, and Paste, i.e., conventional editingfunctions. Similarly, a control button 266 can be activated to display amenu (not shown) that permits multiple Undo and Redo operations. If theuser requires assistance in performing any operation in this graphicalprogram mode, a helper icon 260 can be selected, causing a Help screento open in which a cartoon-like character provides hints, Wizards, andother assistance to the user. At any time the user chooses to exit theapplication embodying the present invention, an Exit control 262 can beselected.

If the user activates toggle switch 250e, additional toggle switches250f through 250j are disclosed on the display screen to provide otherediting options, as shown in FIG. 10. These options, which arerespectively associated with toggle switches 250f through 250j, includeediting an event, stepping through the events in the graphic program oneat a time, creating a disk or run-time version of the game program (topublish it so that other users can run the game program without theprogram used to create it), changing basic attributes of the game suchas the backdrop using the Game Design feature, or switching back toaccess the options associated with toggle switches 250a through 250d.

With reference to the example shown in FIG. 10, a user has activatedtoggle switch 250f, selectively choosing to edit an event. Events areassociated with specific objects and typically comprise at least oneobject and an associated action. In the example illustrated, the userhas selected a graphic icon 257 (first object button) on object bar 252,which represents Kongo King. Once the user's selection is registered bythe program, an event dialog option box 259 opens on the right side ofobject bar 252, providing the user with a list of different actions thatcan be selectively associated with Kongo King to define an event. Indialog box 259, only four such actions are shown, but additionalavailable actions can also be viewed by scrolling through the dialog boxin the conventional manner. Alternatively, the user can select any ofthe other objects used in the Kongo King program that are displayed onobject bar 252; the user can selectively view additional objects byactivating control buttons 256 and 254 to scroll left or right todisplay other object buttons.

When the user selects a specific action that should be associated with aselected object, as for example, by indicating that the object "KongoKing" is to be associated with the action "runs into the wall," agraphical program code editor 283 opens on the right side of the screen,as shown in FIG. 11. To the left of the graphical program code editor isa graphic selection box 281, that includes objects 282 and actions 284that can be selected to activate when the object/action (event)relationship occurs. In this Example, the user has selected a graphicicon 296 representing Kongo King from graphic selection box 281, and haschosen a graphic icon 302, representing an action that the user wants tohappen when the event "Kongo King runs into the wall" occurs. In thisExample, graphic icon 302 indicates that Kongo King is to scream.Additional available actions are also provided, as indicated by theother displayed graphic icons 285. Furthermore, the user can scroll thewindow up or down to display still other available actions by selectingan up arrow 290 or a down arrow 292. Similarly, objects represented by abanana icon 298 or a barrel icon 300 can be selected, and the user candisplay other objects to associate with an action by selecting an uparrow 286 or a down arrow 288 to scroll through the available objects.

When, as shown in the Example, the user selects an action for theselected object, the code editor displays a corresponding plain textlisting 304 of the event/action and provides the user an option to setany parameters associated therewith. Some actions do not have parametersassociated with them. In the Example, a slider switch 306 can be movedto choose the number of screams Kongo King will emit upon running into awall.

Graphical program code editor 283 also includes other controls 308 foradding and deleting graphical program steps, introducing "if" clauses,and looping or repeating statements and constructs represented by theplain text listing. In addition, a control 310 labeled "Try It" ispresented so that the user can immediately try the code graphicallyselected to see the effect of any modification or addition made to thegraphical program. Buttons 312 and 314 respectively enable the user toselect OK or CANCEL, indicating that the corresponding action should betaken.

Below the game area appears a one-line window 294 in which the VBA codecorresponding to the graphical program step entered by the user in thegraphical program code editor is displayed. In this Example, theone-line window includes the statement KK.SCREAM(1), which is thecorresponding VBA code statement for the action just selected by theuser in the above graphical program code editor. In the graphical codeediting view mode that is shown in FIG. 11, the user cannot directlychange the VBA statement appearing in one-line window 294 to modify theprogram; the VBA code shown is effectively read only. However, two userselectable options are available, depending upon the experience level ofthe user. In the first option, clicking on any portion of the VBAstatement that appears in one-line window 294 has no effect at all. Thesecond option permits the user to click on either the object or theaction portion of the VBA statement to change the focus of the graphiccode editor. For example, if the user clicks on the "KK" portion of theVBA statement, the focus shifts to graphic icon 296, which representsKongo King. Similarly, if the user clicks on the action portion of theVBA statement "SCREAM," the focus in the graphic code editor shifts tothe corresponding graphic icon 302 under the action that can beassociated with the selected object. A click on the parameter portion ofthe VBA statement "(1)," causes the focus to shift to toggle switch 306.

By activating toggle switch 250g in FIG. 10, the user can selectivelychoose to step through the events comprising the graphical program.Selecting the Step Event option opens an event panel 268 on sub-panel234 as shown in FIG. 12, providing the user with buttons for selectivelyfiltering the events through which the graphical program steps. In theExample illustrated, the user has selected a button 270, indicating thedesire to step through Kongo King events. As a result, only the eventsassociated with Kongo King will be used in the Step Event function; allother events will be filtered out. A second control button 272 islabeled "Amy's Events." In this Example, the user's name is Amy (enteredwhen the user first begins running the graphical programming systemsoftware application), and selecting control button 272 will cause onlythose events added by Amy or modified by Amy during the current sessionto be included in the Step Event function. A third control button 274enables the user to pick the particular event or series of eventsthrough which the Step Event function will operate. Finally, a controlbutton 276 includes all events when the Step Event function isimplemented. A toggle switch 278 gives the user the option toselectively list the events that occur after the user toggles a startstepping switch 280.

The ability to filter events so that only those implemented by aspecific object or those effected by changes made by the user greatlysimplifies the editing of code typically carried out during the StepEvent function. By stepping only through the filtered events, otherevents which are of no concern are not presented to the user and thetask of editing or finding problems in the program is greatlysimplified.

FIG. 13 shows a graphical program step editor window 322 that isdisplayed on the screen during the Step Editing mode. In a window 324, acurrent or past object and action (together comprising an event) aregraphically displayed. For the illustrated Example, a graphic object 338representing Kongo King is shown in connection with both an action "RANINTO" and another graphic object 340, which represents a banana. Thegraphical program step editing window presents the user with the optionof modifying the currently displayed event. Three buttons 342, 344, and346 give the user the option of selecting YES, indicating a desire tomodify the currently displayed event, or NO, indicating that the userwants to continue with the next step, or STOP STEP EDITING, which isselected to discontinue the step editing operation. Several othercontrol options are presented on control buttons 332, 334, and 336,including the option of starting a new game, loading another game, orsaving the game as currently modified. Also included are controls 328and 330 for respectively pausing or quitting the current game.

In the event that the user elects to modify the graphically displayedevent, as indicated by the user selecting YES (control button 342 inFIG. 13), a step editor window 350 opens up on the screen, referencingthe event to be edited in a block 352. FIG. 14 illustrates the graphicstep editor that opens at this point. In this Example, the event isindicated in plain text as "WHEN KONGO KING RUNS INTO BANANA." A window354 indicates the actions that will be taken when editing the eventselected, and these actions are presented in plain text. For the exampleshown in FIG. 14, the user has elected an action--ADD 1 TO BANANACOUNT--that will occur when Kongo King runs into a banana. One-linewindow 294 includes the corresponding VBA statement "BANANA.COUNTPLUS(1)."

Below window 354 in the Step Editor are included controls 308, control310, and additional controls 356 through 362. Control 356 provides forrestarting the game program at the beginning, control 358 makes theediting changes selected by the user and restarts the game programrunning at the point it was interrupted. Control 360 cancels the changesmade by the user during the step editing process, and control 362 stopsthe step editing process.

The Advanced editing mode is illustrated in FIG. 15. In this view, acode editor 370 is open on the display screen. Code editor 370 includesa window 372 in which an event is listed for one of the selectedobjects. In the example shown, the event listed is "WHEN KONGO KING RUNSINTO WALL." Below the plain text listing of the event being edited are aseries of plain text statements indicating actions that are currently inthe program. A line 392 indicates that when Kongo King runs into thewall, Kongo King belches fire, and a parameter box 394 indicates thesize of the flame emitted. A line 395 is an Example of a construct,reading "CASE KK HEIGHT." The first line 396 under the Case constructreads "SMALL;" additional lines of the plain text listing view of thegame program can be observed by scrolling within the window.

A code keyboard 376 appears within the Advanced code editor window andincludes a plurality of keys 378 that can be selected to assist the userin adding code in the plain text format to the code editor window. Forexample, if the user selects the key labeled "MATH," a Wizard dialog(not shown) opens on the screen to assist the user in addingmathematical statements to the program. By providing the code keyboardand assistance related to each of the constructs and functionsrepresented by the keyboard buttons that can be selected, aninexperienced user can easily add plain text program statements likethose shown in the example, without concern about errors in syntax. Thegraphical programming system ensures that syntax errors are not enteredin the Advanced programming view or editing mode.

The control keyboard includes conventional OK and CANCEL controls 380and 382 for indicating that the user is finished with plain text editingin the advanced view mode, or for canceling any changes that have beenmade. A VALIDATE control 384 can be selected to determine whether thecode is syntactically correct and will not give rise to anyprecompilation errors. However, use of VALIDATE control 384 does notdetect run-time errors or errors in logic introduced by the user whenediting a game program.

After the user has become sufficiently experienced in programming usingthe graphical program editor and the Advanced view code editor, it islikely that the user may wish to make further changes that can only bemade by activating the VBA code editing mode. The option to edit thegame program in ways that are beyond the scope of the graphicalprogramming mode and the Advanced programming mode is therefore anincentive that will encourage users to learn more about text basedprogramming in the VBA code editing mode.

In FIG. 16, an exemplary VBA code editor 400 is illustrated. VBA codeeditor 400 shows the VBA code that is to be executed when an event shownin a window 402 occurs. In the Example, the event listed in window 402states "WHEN KK RUNS INTO WALL," and the VBA statements that depend uponthis event are shown in a VBA code editor window 404. Only three linesof VBA code are illustrated in this example. A line 406 indicates thatone action "KK.SCREAM" will occur. The next VBA statement in window 404is a line 408, which is an "IF" clause, reading "IF (KK.SIZE>BIG), THEN"followed by a line 410 reading "KK. SIZE=SMALL." A scroll bar 412 isincluded for scrolling through statements in the VBA code window. Belowthe VBA code editor is a VBA toolbar 414. VBA toolbar 414 includes aplurality of controls 416 through 436 that can be used to implementdifferent functions within the VBA code editor window. Control 416 opensa directory, enabling the user to select a file. Control 418 saves thecurrent file. A different file can be selected using control button 416.Control button 420 activates a list of available objects that can beincluded in the VBA statements, and a control 422 opens a property sheetfor any statement that has been selected. The remaining controls 424through 436 are used in controlling the game program being developed bythe user. Control 424 is a play button, that initiates play of the gameprogram. Control 426 causes the program developed by the user to pause.

Since certain control actions made by the user can be recorded, acontrol 428 enables the user to initiate recording the selection of keyson the keyboard and selections made using mouse 22. Control 430, whichincludes an octagonal-shaped stop sign graphic symbol, is used forstopping execution of the program. A control 432 can be activated to seta watch point and is useful for monitoring variables or actions in thecode. A single "footstep" graphic symbol on control 434 indicates thatit is used for stepping through a program, while the multiple "steps" ofthe graphic symbol on control 436 indicate its use in stepping overstatements in the program that have been selected.

Although VBA code editor 400 gives the user substantially more latitudein developing and modifying games, it should be evident that only moresophisticated users will be able to understand the VBA programminglanguage that is required for use of this editing mode. To achieve thislevel of understanding, the mode that combines display of the VBA codeeditor view window with the graphic programming view window ispreferable for teaching the user the relationship between the graphicprogramming steps in a program and corresponding VBA code. Although notspecifically shown, this combined mode enables both the VBA code editorwindow shown in FIG. 16, and the corresponding graphical program codeeditor window shown in FIG. 11 to be simultaneously displayed on thescreen to provide an immediate feedback of the correspondence betweengraphical program steps and the corresponding VBA code that supportsthose steps.

Although it is not possible to provide a one-to-one correspondence forevery editing change made in the VBA code editor screen to that shown inthe corresponding graphical program editor screen, where the mapping ispossible on a one-to-one basis, the user will be provided with anentertaining and easily assimilated education, which should eventuallylead to substantially improved skill in writing VBA code programs. Theskills developed in this manner should thus be applicable to developingmore sophisticated programs, including those that are created fromscratch, without the benefit of starting with a basic predefinedgraphical game program.

Although the present invention has been described in connection with thepreferred form of practicing it, it will be understood by those ofordinary skill in the art that many modifications can be made theretowithin the scope of the claims that follow. Accordingly, it is notintended that the scope of the invention in any way be limited by theabove description, but that it be determined entirely by reference tothe claims that follow.

The invention in which an exclusive right is claimed is defined by thefollowing:
 1. A graphical programming system adapted to execute under agraphic user interface, said graphical programming system being adaptedto enable a user to design and modify a graphical program, and to assistthe user in learning computer programming with a text-based programminglanguage, comprising:(a) a computer on which the graphical programmingsystem executes under the graphic user interface, said computerincluding a user input device for making selections and enteringinstructions that control the graphical programming system, and adisplay screen on which are displayed components of the graphicalprogramming system; (b) object means for presenting a plurality ofgraphic objects on the display screen of the computer and for enablingthe user to select a specific graphic object from among said pluralityof graphic objects, for inclusion in the graphical program; (c) actionmeans for displaying a plurality of actions to the user on the displayscreen, at least one of said plurality of actions being represented by agraphic icon, and for enabling the user to select a specific action forexecution by a user selected graphic object, thereby creating anddisplaying a user defined sequence of graphic program steps that includetext and graphic objects, said user defined sequence of graphic programsteps comprising the graphical program; and (d) mode selection means forenabling the user to select a mode from among a plurality of differentmodes, one of said plurality of different modes displaying at least aportion of a textual computer program listing corresponding to a portionof the graphical program, a plain text mode enabling the user to entertext that is translated to program commands in the textual computerprogram listing for modifying the graphical program, said textualcomputer program listing assisting the user to learn computerprogramming by exposing the user to the program commands of thetext-based programming language that correspond to the graphic programsteps of the graphical program.
 2. The system of claim 1, wherein theplain text entered by the user is constrained to text that correctlytranslates to the commands in the text-based programming language. 3.The system of claim 2, wherein the plain text that can be entered by theuser is limited to a predefined set of programming language constructsthat are presented to the user in a graphical keyboard displayed on thedisplay screen, for selection and use in designing and modifying thegraphical program.
 4. The system of claim 1, wherein another mode of theplurality of modes enables the user to freely enter and modify commandsof the text-based programming language to design and modify thegraphical program.
 5. The system of claim 1, wherein another mode of theplurality of modes enables the user to simultaneously view both aneditor for the graphical program and an editor for the text-basedprogramming language so that changes in the graphical program areimmediately reflected in the corresponding commands of the text-basedprogramming language and so that changes in the commands of thetext-based programming language are immediately reflected in thecorresponding graphical program.
 6. The system of claim 1, wherein thegraphical programming system includes a basic graphical program for theuser to modify.
 7. The system of claim 1, further comprising means formapping between graphical steps of the graphical program and thecorresponding commands of the text-based programming language.
 8. Thesystem of claim 8, wherein the graphical program is executed by thecomputer based upon underlying corresponding commands of the text-basedprogramming language.
 9. The system of claim 1, further comprisinganimated help means that prompt the user to carry out steps required indesigning and modifying the graphical program.
 10. The system of claim9, wherein the help means provide help to the user in debugging thegraphical program.
 11. The system of claim 1, further comprising eventmeans enabling the user to select an event from among a plurality ofevents graphically presented to the user on the display screen, forassociation with one of the graphic objects selected by the user. 12.The system of claim 11, wherein the action means enable the user tospecify the action associated with one of the graphic objects selectedby the user that will be implemented when the event selected occurs. 13.A method for creating a graphical program for use on a computer under agraphic user interface operating system, to enable a user to graphicallydesign and modify the graphical program, and by doing so, to betterunderstand a text-based programming language, said method comprising thesteps of:(a) presenting a plurality of graphic objects on a displayscreen of the computer and enabling the user to select specific graphicobjects from among those presented for inclusion in the graphicalprogram; (b) displaying a plurality of actions for the graphic objects,at least one of said plurality of actions being represented by a graphicicon, and enabling the user to select a specific action to apply to anyof the graphic objects that were selected to create a user definedsequence of graphic program steps comprising the graphical program; (c)enabling the user to selectively display a plain text listingcorresponding to at least a portion of the graphical program, said plaintext listing enabling the user to better understand the text-basedprogramming language by comparison of commands of the text-basedprogramming language, which are included within the plain text listing,to the corresponding portion of the graphical program; and (d) enablingthe user to modify the plain text listing, causing corresponding changesto the graphical program.
 14. The method of claim 13, wherein the stepof enabling the user to selectively display further comprises the stepof enabling the user to select one of a plurality of modes fordisplaying and modifying program commands that affect the graphicalprogram.
 15. The method of claim 13, further comprising the step ofenabling the user to graphically select an event for association withone of the graphical objects from among a plurality of events.
 16. Themethod of claim 13, further comprising the step of enabling the user toassociate an action implemented by one of the selected graphical objectswith an event associated with said one of the selected graphical objectsso that the action is carried out when the event happens to said one ofthe graphical objects.
 17. The method of claim 13, wherein the step ofselectively displaying further comprises the step of enabling the userto select a mode for designing and modifying the graphical program bymaking changes to an underlying text-based programming language.
 18. Themethod of claim 17, wherein the changes that the user is enabled to maketo the underlying text-based programming language are constrained to apredefined set of programming language constructs.
 19. The method ofclaim 17, wherein an editor for the graphical program and an editor forthe underlying text-based programming language are both displayed, sothat changes made in the underlying text-based programming language arereflected in the editor for the graphical program, and so that changesmade in the graphical program are reflected in the editor for theunderlying text-based program language, thereby enabling the user toobserve a relationship between the graphical program and the underlyingtext-based programming language.
 20. The method of claim 17, furthercomprising the step of translating between the graphical program and theunderlying text-based programming language.
 21. The method of claim 13,further comprising the step of providing an animation for prompting theuser to carry out steps required to design and modify the graphicalprogram.
 22. The method of claim 21, wherein the animation provides helpto the user in debugging the graphical program.
 23. The method of claim13, further comprising the step of enabling the user to modify agraphical program supplied to the user.
 24. The method of claim 13,further comprising the step of providing a set of graphical tools fordesigning and modifying the graphical program.
 25. The method of claim13, wherein one line of the graphical program may correspond to aplurality of lines of the plain text listing.
 26. The method of claim13, wherein a modification to the graphical program made during aninterruption of its execution is implemented when the graphicalprogrammed is again resumed.
 27. The method of claim 13, furthercomprising the step of enabling the user to set properties for at leastsome of the graphical objects selected by the user.